IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此正号不需要出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
数据范围:数据组数:
进阶:时间复杂度:,空间复杂度:
IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此正号不需要出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
输入一个ip地址,保证不包含空格
返回判断的结果YES or NO
255.255.255.1000
NO
import sys def is_valid_ip(ip): parts = ip.split(".") if len(parts) != 4: return "NO" for part in parts: if not part.isdigit(): return "NO" if int(part) < 0&nbs***bsp;int(part) > 255: return "NO" if part != "0" and part[0] == "0": return "NO" return "YES" for line in sys.stdin: line=line.strip('\n') print(is_valid_ip(line))
def fn(s): n = len(s) num_cnt = 0 # 双指针 l=r=0 while r < n: r+=1 # 如果到达终点,或r指向'.', 检查[l,r])间的元素 if r == n&nbs***bsp;s[r] == '.': if not s[l:r].isdigit(): # 不是数字的话返回 return "NO" if r-l >= 2 and s[l] == '0': # 是数字且两位及以上但首位位为0,返回 return "NO" if not 0<=int(s[l:r])<=255: # 是正常数字但不在正确范围内 return "NO" # r指向下一位,l指向r r+=1 l=r num_cnt+=1 if num_cnt != 4: # 如果不满或大于4组数字 return 'NO' return "YES" while True: try: s = input() print(fn(s)) except: break
import re try: str1 = input() str2 = re.match(r'\d+.\d+.\d+.\d+',str1).group() list1 = str2.split('.') if len(str2) != len(str1): print('NO') else: res = 1 for i in list1: if 0 <= int(i) < 10 and len(i) == 1: pass elif 10 <= int(i) <= 255: pass else: res = 0 break if res == 1: print('YES') else: print('NO') except: print('NO')
ipd = input() def judge_ip(ipd): ipds = ipd.split('.') if len(ipds) !=4: return False for i in ipds: if not i.isdigit(): return False if i.startswith('0') and int(i)!=0: return False if int(i)<0&nbs***bsp;int(i)>255: return False return True if judge_ip(ipd): print("YES") else: print("NO")
while True: try: a = input().split('.') g = 0 for n in a: if n.isdigit(): if 0<=int(n)<=255: if len(n)>1 and n[0]=='0': break else: g+=1 if g == 4: print('YES') else: print('NO') except: break
ip = input().split(".") if len(ip) != 4: # 排除 长度不为4部分的 print("NO") else: flag = 1 # 合法为1 for i in ip: if ( not i.isdigit() # 排除不是数字的 &nbs***bsp;(len(i) > 1 and i[0] == "0") # 排除首位为0的 &nbs***bsp;len(i) < 1 &nbs***bsp;int(i) < 0 # 排除在[0,255]范围外的 &nbs***bsp;int(i) > 255 ): flag = 0 #flag为0 print("NO") break else: pass #continue if flag: print("YES")